#include <stddef.h>
#ifndef __DASHUN_H
#include <stdio.h>

void getExecutableDir(char *dir, size_t size);

struct ObjMap {
    wchar_t *msg;
    struct ObjMap **prev;
    struct ObjMap **next;
    size_t p_size;
    size_t n_size;
}; // 对象图
struct ObjList {
    struct ObjMap **list;
    size_t size;
}; // 对象表
void ObjMap_init(struct ObjMap *M, wchar_t *msg);
struct ObjMap *crtNod(wchar_t *msg);
struct ObjMap *crtLnk(struct ObjMap *M, struct ObjMap *S);
void initList(struct ObjList *L);
void travObj(struct ObjList *L,  struct ObjMap * M);
void lsFree(struct ObjList *L);

//------------------
size_t lexer_zh(struct ObjMap *M, struct ObjList *L, char* path);


#endif